﻿CREATE PROC spObtenEstudioCaptura
	@pnIdEstudio		INT,
	@pnIdLaboratorio	INT,
	@pnIdSucursal		INT,
	@pnIdResultado		INT
AS
BEGIN
	SET NOCOUNT ON;
		
	SELECT	e.IdEstudio, e.NombreEstudio
	FROM	dbo.CatEstudio (NOLOCK)			e
	WHERE	e.IdEstudio	= @pnIdEstudio
	AND		e.IdLaboratorio= @pnIdLaboratorio
	
	IF @pnIdResultado IS NULL
	BEGIN
		SELECT	ce.IdEstudio,
				ce.IdCampo,
				ce.IdTipoCampo,
				ce.NombreCampo,
				ce.EsRequerido,
				ce.Unidad,
				f.IdFormula,
				NULL Valor
		FROM	dbo.CatCampoEstudio (NOLOCK)	ce
		LEFT JOIN dbo.FormulaCampo	(NOLOCK)	f
		ON		ce.IdEstudio	= f.IdEstudio
		AND		ce.IdLaboratorio= f.IdLaboratorio
		AND		ce.IdCampo		= f.IdCampo
		WHERE	ce.IdEstudio	= @pnIdEstudio
		AND		ce.IdLaboratorio= @pnIdLaboratorio
		ORDER BY ce.Orden
	END
	ELSE
	BEGIN
		SELECT	rv.IdEstudio,
				rv.IdCampo,
				ce.IdTipoCampo,
				ce.NombreCampo,
				ce.EsRequerido,
				ce.Unidad,
				f.IdFormula,
				rv.Valor
		FROM	dbo.Resultado (NOLOCK)				r
		INNER JOIN dbo.ResultadoDet (NOLOCK)		rd
		ON		r.IdResultado	= rd.IdResultado
		AND		r.IdLaboratorio = rd.IdLaboratorio
		AND		r.IdSucursal	= rd.IdSucursal
		INNER JOIN dbo.ResultadoValores	(NOLOCK)	rv
		ON		rd.IdResultado	= rv.IdResultado
		AND		rd.IdEstudio	= rv.IdEstudio
		AND		rd.IdLaboratorio= rv.IdLaboratorio
		AND		rd.IdSucursal	= rv.IdSucursal
		INNER JOIN dbo.CatCampoEstudio (NOLOCK)		ce
		ON		rv.IdLaboratorio= ce.IdLaboratorio
		AND		rv.IdEstudio	= ce.IdEstudio
		AND		rv.IdCampo		= ce.IdCampo
		LEFT JOIN dbo.FormulaCampo	(NOLOCK)	f
		ON		ce.IdEstudio	= f.IdEstudio
		AND		ce.IdLaboratorio= f.IdLaboratorio
		AND		ce.IdCampo		= f.IdCampo
		WHERE	r.IdResultado	= @pnIdResultado
		AND		r.IdLaboratorio	= @pnIdLaboratorio
		AND		r.IdSucursal	= @pnIdSucursal
	END
	SET NOCOUNT OFF;
END